import time
from time import sleep

from driven.Driven import Driven
from search.SearchElement import SearchElement


class Kdt(object):
    """
    放各种关键字操作
    """

    def __init__(self):
        self.driver = Driven.get_driver()

    def open(self, browser_type="Chrome", url='', value=''):
        """
        因为浏览器在调用驱动器Driven的时候就已经获取了.而现在是要在浏览器中打开一个网页
        :param browser_type: 要使用的浏览器类型
        :param url:          要打开的网页地址
        :return:
        """
        print("url:{}".format(url))
        # 在浏览器中打开url所对应的网页
        self.driver.get(url)
        # 设置网页的窗口最大化
        self.driver.maximize_window()

    def input(self, how, what, value):
        """
            执行输入操作
        :param how:
        :param what:
        :param value:
        :return:
        """
        # 找到输入框元素
        element = SearchElement.find_element(driver=self.driver, how=how, what=what)
        # 判断元素是否存在
        if element:
            element.clear()
            element.send_keys(value)

    def click(self, how, what, value=''):
        """
            根据how和what定位到一个元素然后执行点击操作
        :param how:
        :param what:
        :return:
        """
        time.sleep(1)
        # 找到输入框元素
        element = SearchElement.find_element(driver=self.driver, how=how, what=what)
        # 当点击的元素是Div弹框时,不需要修改处理的代码.使用xpath一样可以的
        # 只是代码的执行速度和网页显示弹框的速度有差异.在代码开始找元素时,可能网页上的弹框
        # 还没有显示出来.最简单的解决方法.在点击之前让代码休息1秒就好了!
        # 判断元素是否存在
        if element:
            element.click()
